nvm (Node Version Manager)


Posted by TempuraEngineer on 2023-11-25

目錄


nvm是什麼

nvm(Node Version Manager)是node.js管理工具,它可以讓你在不同專案上使用不同版本的node.js

至於為什麼需要nvm原因大致如下

  • 需要不同版本的node.js
  • 避免全域安裝衍生的問題(ex: 因為某個專案需要,而更新package,卻導致其他用到同個package的專案無法運作)

Why NVM is Tremendously Helpful for Web Developers


安裝nvm與node.js

安裝nvm

安裝有兩個方式,透過cURL或者homebrew,但是官方不建議用homebrew安裝,因為可能出現奇怪的bug

如果不小心裝下去了可以使用以下指令刪除

brew uninstall nvm

// 如果曾經建立過.nvm資料夾給nvm也要順便刪除
rm -rf .nvm

但如果真的要用homebrew安裝,也可以看How to install Node.js using NVM on macOS M1

接著來看看如何用cURL安裝

// 版號會變,建議到github看
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

安裝完後要重開終端機才會生效,或者下指令source .zshrc也可以

nvm github


安裝node.js

// 安裝node.js 14.21
nvm install 14.21

// 安裝node.js 18
nvm install 18

安裝的過程可能會有點久,成功後會在終端機出現Now using node v14.21.3 (npm v6.14.18)

如果還有出現Creating default alias: default -> 14.21 (-> v14.21.3)代表nvm自動把剛剛安裝的node版本設為default

可以透過以下指令修改default node version

nvm alias default v18.12.0


設定.nvmrc (可不做)

在專案根目錄新增.nvmrc,並貼上想要的node版號

14.21

然後在.zshrc新增設定,記得一定要貼在nvm initialization後面

# 這是原本就有的,nvm initialization設定
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# This loads nvm bash_completion

# 把以下這段貼到nvm initialization後面
autoload -U add-zsh-hook
load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"
  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
    fi
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

接著打開專案就會自動切換node版本,成功後終端機會出現Now using node v14.21.3 (npm v6.14.18)

如果不想設定也可以手動切換

nvm use 14.21

#node.js #NVM #node version manager #node.js多開







Related Posts

3. 優美地定義 React 型別

3. 優美地定義 React 型別

 API

API

Elevate Your Dermatology Practice with the Electric Dermatology Chair

Elevate Your Dermatology Practice with the Electric Dermatology Chair


Comments